[INFO] cloning repository https://github.com/jamesyeap/scoundrel
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jamesyeap/scoundrel" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjamesyeap%2Fscoundrel", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjamesyeap%2Fscoundrel'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 141b3947e8483f690feb796382a3d6c3371332af
[INFO] checking jamesyeap/scoundrel against master#c290daa1e5274a52e54a0f49e31bd70192abc606 for pr-133502-23
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjamesyeap%2Fscoundrel" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jamesyeap/scoundrel
[INFO] finished tweaking git repo https://github.com/jamesyeap/scoundrel
[INFO] tweaked toml for git repo https://github.com/jamesyeap/scoundrel written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jamesyeap/scoundrel on toolchain c290daa1e5274a52e54a0f49e31bd70192abc606
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jamesyeap/scoundrel already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.32
[INFO] [stderr]   Downloaded zerocopy v0.8.32
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 2c003faa2148aeefbf6db842c69b5ea0859e156101173d3467e4f3efd8c8f95e
[INFO] running `Command { std: "docker" "start" "2c003faa2148aeefbf6db842c69b5ea0859e156101173d3467e4f3efd8c8f95e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2c003faa2148aeefbf6db842c69b5ea0859e156101173d3467e4f3efd8c8f95e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2c003faa2148aeefbf6db842c69b5ea0859e156101173d3467e4f3efd8c8f95e" "/opt/rustwide/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2c003faa2148aeefbf6db842c69b5ea0859e156101173d3467e4f3efd8c8f95e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2c003faa2148aeefbf6db842c69b5ea0859e156101173d3467e4f3efd8c8f95e" "/opt/rustwide/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.179
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]     Checking unicode-truncate v2.0.1
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling zerocopy v0.8.32
[INFO] [stderr]    Compiling owo-colors v4.2.3
[INFO] [stderr]     Checking time-core v0.1.7
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking strum v0.27.2
[INFO] [stderr]    Compiling color-spantrace v0.3.0
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking addr2line v0.25.1
[INFO] [stderr]     Checking indenter v0.3.4
[INFO] [stderr]     Checking rustc-demangle v0.1.27
[INFO] [stderr]     Checking eyre v0.6.12
[INFO] [stderr]     Checking kasuari v0.4.11
[INFO] [stderr]     Checking object v0.37.3
[INFO] [stderr]     Checking ratatui-core v0.1.0
[INFO] [stderr]     Checking tracing-error v0.2.1
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking time v0.3.45
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking ratatui-widgets v0.3.0
[INFO] [stderr]     Checking ratatui-crossterm v0.1.0
[INFO] [stderr]     Checking backtrace v0.3.76
[INFO] [stderr]     Checking color-eyre v0.6.5
[INFO] [stderr]     Checking ratatui-macros v0.7.0
[INFO] [stderr]     Checking ratatui v0.30.0
[INFO] [stderr]     Checking scoundrel v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `IterMut`
[INFO] [stdout]  --> src/cards/hand.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::slice::{Iter,IterMut};
[INFO] [stdout]   |                       ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INVALID_KEY` should have an upper camel case name
[INFO] [stdout]  --> src/game/choice.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     INVALID_KEY(KeyCode),
[INFO] [stdout]   |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `InvalidKey`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INVALID_OPTION` should have an upper camel case name
[INFO] [stdout]  --> src/game/choice.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     INVALID_OPTION(String),
[INFO] [stdout]   |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `InvalidOption`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FIGHT_WITH_WEAPON` should have an upper camel case name
[INFO] [stdout]   --> src/game/choice.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     FIGHT_WITH_WEAPON(bool),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FightWithWeapon`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]   --> src/game/game.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Display for GameScore {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]   --> src/game/game.rs:63:48
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn start_game(&mut self) -> io::Result<GameScore> {
[INFO] [stdout]    |                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:386:50
[INFO] [stdout]     |
[INFO] [stdout] 386 |     fn end_game(&self, hand: Hand) -> io::Result<GameScore> {
[INFO] [stdout]     |                                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated tuple struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:405:16
[INFO] [stdout]     |
[INFO] [stdout] 405 |             Ok(GameScore(Some(-total_strength_of_monsters_left_in_deck)))
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated tuple struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:416:20
[INFO] [stdout]     |
[INFO] [stdout] 416 |                 Ok(GameScore(Some(score as i32)))
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated tuple struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:418:20
[INFO] [stdout]     |
[INFO] [stdout] 418 |                 Ok(GameScore(Some(self.game_state.life as i32)))
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:423:39
[INFO] [stdout]     |
[INFO] [stdout] 423 |     fn exit_game(&self) -> io::Result<GameScore> {
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated tuple struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:426:12
[INFO] [stdout]     |
[INFO] [stdout] 426 |         Ok(GameScore(None)) // return a game score of None as the user has exited the game
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `game::game::GameScore::0`: please use `run_game` instead
[INFO] [stdout]   --> src/game/game.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 |         match self.0 {
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cards::deck::Deck`
[INFO] [stdout]    --> src/cards/deck.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 128 |     use crate::cards::deck::Deck;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]    --> src/cards/deck.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |     use std::collections::HashSet;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IterMut`
[INFO] [stdout]  --> src/cards/hand.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::slice::{Iter,IterMut};
[INFO] [stdout]   |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INVALID_KEY` should have an upper camel case name
[INFO] [stdout]  --> src/game/choice.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     INVALID_KEY(KeyCode),
[INFO] [stdout]   |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `InvalidKey`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INVALID_OPTION` should have an upper camel case name
[INFO] [stdout]  --> src/game/choice.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     INVALID_OPTION(String),
[INFO] [stdout]   |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `InvalidOption`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FIGHT_WITH_WEAPON` should have an upper camel case name
[INFO] [stdout]   --> src/game/choice.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     FIGHT_WITH_WEAPON(bool),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FightWithWeapon`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]   --> src/game/game.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Display for GameScore {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]   --> src/game/game.rs:63:48
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn start_game(&mut self) -> io::Result<GameScore> {
[INFO] [stdout]    |                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:386:50
[INFO] [stdout]     |
[INFO] [stdout] 386 |     fn end_game(&self, hand: Hand) -> io::Result<GameScore> {
[INFO] [stdout]     |                                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated tuple struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:405:16
[INFO] [stdout]     |
[INFO] [stdout] 405 |             Ok(GameScore(Some(-total_strength_of_monsters_left_in_deck)))
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated tuple struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:416:20
[INFO] [stdout]     |
[INFO] [stdout] 416 |                 Ok(GameScore(Some(score as i32)))
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated tuple struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:418:20
[INFO] [stdout]     |
[INFO] [stdout] 418 |                 Ok(GameScore(Some(self.game_state.life as i32)))
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:423:39
[INFO] [stdout]     |
[INFO] [stdout] 423 |     fn exit_game(&self) -> io::Result<GameScore> {
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated tuple struct `game::game::GameScore`: please use `run_game` instead
[INFO] [stdout]    --> src/game/game.rs:426:12
[INFO] [stdout]     |
[INFO] [stdout] 426 |         Ok(GameScore(None)) // return a game score of None as the user has exited the game
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `color_eyre::owo_colors::OwoColorize`
[INFO] [stdout]  --> src/ui.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use color_eyre::owo_colors::OwoColorize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufRead`
[INFO] [stdout]   --> src/ui.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::io::BufRead;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `game::game::GameScore::0`: please use `run_game` instead
[INFO] [stdout]   --> src/game/game.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 |         match self.0 {
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Menu`, `Exiting`, and `ExitingRound` are never constructed
[INFO] [stdout]   --> src/app.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum CurrentScreen {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 14 |     Menu,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     Exiting,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     ExitingRound,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameScore` is never constructed
[INFO] [stdout]   --> src/game/game.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct GameScore(Option<i32>);
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Game` is never constructed
[INFO] [stdout]   --> src/game/game.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Game {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/game/game.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl Game {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  56 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn start_game(&mut self) -> io::Result<GameScore> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     fn read_user_input(&self) -> io::Result<Choice> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     fn read_user_input_for_combat_choice(&self) -> io::Result<Choice> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn show_hand(&self, hand: &Hand) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     fn clear_screen(&self) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     fn show_stats(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     fn end_game(&self, hand: Hand) -> io::Result<GameScore> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     fn exit_game(&self) -> io::Result<GameScore> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BlockedCreatures` is never constructed
[INFO] [stdout]    --> src/game/game.rs:430:8
[INFO] [stdout]     |
[INFO] [stdout] 430 | struct BlockedCreatures(Vec<Card>); // TODO: how can we make invalid states unrepresentable -> we should only be able to store crea...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameState` is never constructed
[INFO] [stdout]    --> src/game/game.rs:444:8
[INFO] [stdout]     |
[INFO] [stdout] 444 | struct GameState {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `draw_cards`, and `put_back_cards` are never used
[INFO] [stdout]    --> src/game/game.rs:453:8
[INFO] [stdout]     |
[INFO] [stdout] 452 | impl GameState {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 453 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     fn draw_cards(&mut self, mut hand: Hand, hand_size: usize) -> Hand {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     fn put_back_cards(&mut self, hand: &mut Hand) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChoiceParseError` is never used
[INFO] [stdout]  --> src/game/choice.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum ChoiceParseError {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Choice` is never used
[INFO] [stdout]   --> src/game/choice.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum Choice {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `color_eyre::owo_colors::OwoColorize`
[INFO] [stdout]  --> src/ui.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use color_eyre::owo_colors::OwoColorize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufRead`
[INFO] [stdout]   --> src/ui.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::io::BufRead;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/game/game.rs:79:13
[INFO] [stdout]    |
[INFO] [stdout] 79 |             self.clear_screen();
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let _ = self.clear_screen();
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:122:33
[INFO] [stdout]     |
[INFO] [stdout] 122 | ...                   self.clear_screen();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 122 |                                 let _ = self.clear_screen();
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:248:41
[INFO] [stdout]     |
[INFO] [stdout] 248 | ...                   self.clear_screen();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 248 |                                         let _ = self.clear_screen();
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:270:41
[INFO] [stdout]     |
[INFO] [stdout] 270 | ...                   self.clear_screen();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 270 |                                         let _ = self.clear_screen();
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:387:9
[INFO] [stdout]     |
[INFO] [stdout] 387 |         self.clear_screen();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 387 |         let _ = self.clear_screen();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:424:9
[INFO] [stdout]     |
[INFO] [stdout] 424 |         self.clear_screen();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 424 |         let _ = self.clear_screen();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Menu`, `Exiting`, and `ExitingRound` are never constructed
[INFO] [stdout]   --> src/app.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum CurrentScreen {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 14 |     Menu,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     Exiting,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     ExitingRound,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameScore` is never constructed
[INFO] [stdout]   --> src/game/game.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct GameScore(Option<i32>);
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Game` is never constructed
[INFO] [stdout]   --> src/game/game.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Game {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/game/game.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl Game {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  56 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn start_game(&mut self) -> io::Result<GameScore> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     fn read_user_input(&self) -> io::Result<Choice> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     fn read_user_input_for_combat_choice(&self) -> io::Result<Choice> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn show_hand(&self, hand: &Hand) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     fn clear_screen(&self) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     fn show_stats(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     fn end_game(&self, hand: Hand) -> io::Result<GameScore> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     fn exit_game(&self) -> io::Result<GameScore> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BlockedCreatures` is never constructed
[INFO] [stdout]    --> src/game/game.rs:430:8
[INFO] [stdout]     |
[INFO] [stdout] 430 | struct BlockedCreatures(Vec<Card>); // TODO: how can we make invalid states unrepresentable -> we should only be able to store crea...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameState` is never constructed
[INFO] [stdout]    --> src/game/game.rs:444:8
[INFO] [stdout]     |
[INFO] [stdout] 444 | struct GameState {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `draw_cards`, and `put_back_cards` are never used
[INFO] [stdout]    --> src/game/game.rs:453:8
[INFO] [stdout]     |
[INFO] [stdout] 452 | impl GameState {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 453 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     fn draw_cards(&mut self, mut hand: Hand, hand_size: usize) -> Hand {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     fn put_back_cards(&mut self, hand: &mut Hand) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChoiceParseError` is never used
[INFO] [stdout]  --> src/game/choice.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum ChoiceParseError {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Choice` is never used
[INFO] [stdout]   --> src/game/choice.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum Choice {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/game/game.rs:79:13
[INFO] [stdout]    |
[INFO] [stdout] 79 |             self.clear_screen();
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let _ = self.clear_screen();
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:122:33
[INFO] [stdout]     |
[INFO] [stdout] 122 | ...                   self.clear_screen();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 122 |                                 let _ = self.clear_screen();
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:248:41
[INFO] [stdout]     |
[INFO] [stdout] 248 | ...                   self.clear_screen();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 248 |                                         let _ = self.clear_screen();
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:270:41
[INFO] [stdout]     |
[INFO] [stdout] 270 | ...                   self.clear_screen();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 270 |                                         let _ = self.clear_screen();
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:387:9
[INFO] [stdout]     |
[INFO] [stdout] 387 |         self.clear_screen();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 387 |         let _ = self.clear_screen();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/game/game.rs:424:9
[INFO] [stdout]     |
[INFO] [stdout] 424 |         self.clear_screen();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 424 |         let _ = self.clear_screen();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.83s
[INFO] running `Command { std: "docker" "inspect" "2c003faa2148aeefbf6db842c69b5ea0859e156101173d3467e4f3efd8c8f95e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2c003faa2148aeefbf6db842c69b5ea0859e156101173d3467e4f3efd8c8f95e", kill_on_drop: false }`
[INFO] [stdout] 2c003faa2148aeefbf6db842c69b5ea0859e156101173d3467e4f3efd8c8f95e
